package org.dtrd.modules.questionnaire.controller;


import ch.qos.logback.classic.Logger;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.dtrd.modules.questionnaire.entity.bean.QuestionnaireDataDetail;
import org.dtrd.modules.questionnaire.entity.request.QuestionnaireDataListRequest;
import org.dtrd.modules.questionnaire.service.IDtrdEntRdQuestionnaireDataService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.dtrd.common.aspect.annotation.AutoLog;
import org.dtrd.modules.questionnaire.entity.bean.QuestionnaireDetail;
import org.dtrd.modules.questionnaire.entity.bean.QuestionnaireListInfo;
import org.dtrd.modules.questionnaire.entity.request.QuestionnaireListRequest;
import org.dtrd.modules.questionnaire.entity.request.QuestionnairePageRequest;
import org.dtrd.modules.questionnaire.service.IDtrdEntRdQuestionnaireService;
import org.dtrd.common.api.vo.Result;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import org.dtrd.base.BaseController;

import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;

import static org.dtrd.common.constant.CommonConstant.*;
import static org.dtrd.config.system.SystemState.ResponseState.*;

/**
 * <p>
 * 调查问卷表 前端控制器
 * </p>
 * @author xiao
 * @since 2022-06-16
 */
@Slf4j
@Api(tags = "调查问卷")
@RestController
@RequestMapping("/questionnaire")
public class DtrdEntRdQuestionnaireController extends BaseController {

    @Autowired
    private IDtrdEntRdQuestionnaireService questionnaireService;
    @Autowired
    private IDtrdEntRdQuestionnaireDataService questionnaireDataService;


    @ApiOperation(value = "查询调查问卷表列表", response = QuestionnaireListInfo.class)
    @PostMapping("/list")
    public Result<?> getQuestionnaireList(@RequestBody QuestionnaireListRequest request){
        List<QuestionnaireListInfo> list = questionnaireService.getQuestionnaireList(request);
        return Result.OK(list);
    }

    @ApiOperation(value = "记录问卷答题项")
    @PostMapping("/answer")
    public Result<?> saveOrUpdateQuestionnaireData(@RequestBody QuestionnaireDataDetail detail){

        boolean result = questionnaireDataService.saveOrUpdateQuestionnaireData(detail);
        return result ? Result.OK() : error(STATE_OPERATION_FAILURE);
    }

    @ApiOperation(value = "查询答题情况", response = QuestionnaireListInfo.class)
    @GetMapping("/status")
    public Result<?> getQuestionnaireStatus(@RequestParam Integer patientId, String type){

        JSONObject result = questionnaireDataService.getPatientQuestionStatus(patientId, type);
        return Result.OK(result);
    }
}
